package q1.project.modules.system.role.dao;

import java.util.List;
import java.util.Optional;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
import q1.project.common.enums.EnableStatusEnum;
import q1.project.modules.system.role.entity.RoleEntity;

/**
 * 角色数据访问对象
 *
 * @author Q1 Team
 * @version 1.0
 */
@Repository
public interface RoleDao
    extends JpaRepository<RoleEntity, String>, JpaSpecificationExecutor<RoleEntity> {

  /** 根据角色编码查询 */
  Optional<RoleEntity> findByRoleCode(String roleCode);

  /** 根据租户ID分页查询角色 */
  Page<RoleEntity> findByTenantId(String tenantId, Pageable pageable);

  /** 搜索角色 注意：此方法应在 Service 层使用 WhereBuilderNow 实现，支持动态查询 */

  /** 根据状态查询角色 */
  List<RoleEntity> findByStatus(EnableStatusEnum status);

  /** 统计租户下的角色数量 */
  long countByTenantId(String tenantId);
}
